package 炫彩窗口类

import (
	wapi "gitee.com/go_888/xcgui/xcgui/wapi"
	"strings"
)

// SetTop 窗口_置顶.
//
// hWnd: 窗口真实句柄.
//
// b: 是否置顶.
func X窗口置顶(窗口句柄 uintptr, 置顶 bool) bool {
	hWndInsertAfter := wapi.X常量_窗口置顶_非顶层窗口之上2
	if !置顶 {
		hWndInsertAfter = wapi.X常量_窗口置顶_非顶层窗口之上1
	}
	return wapi.X设置窗口位置(窗口句柄, hWndInsertAfter, 0, 0, 0, 0, wapi.X窗口大小定位标识_保留当前位置|wapi.X窗口大小定位标识_保留当前大小)
}

// GetTitle 取窗口标题.
//
// hWnd: 窗口真实句柄.
func X取窗口标题(窗口句柄 uintptr) string {
	dwSize := wapi.X取窗口标题长度(窗口句柄)
	if dwSize == 0 {
		return ""
	}
	dwSize++ // 必须算上空字符

	var title string
	wapi.X取窗口标题(窗口句柄, &title, dwSize)
	return title
}

// GetHWND 取窗口句柄, 标题支持模糊. 返回窗口真实句柄.
//
// className: 窗口类名, 不支持模糊, 可空.
//
// title: 窗口标题, 可输入关键字, 支持模糊, 可空.
func X取窗口模糊句柄(窗口类名, 窗口标题 string) uintptr {
	if 窗口类名 == "" && 窗口标题 == "" {
		return 0
	}
	var hWnd uintptr
	for {
		hWnd = wapi.X模糊搜索子窗口(0, hWnd, 窗口类名, "")
		if hWnd != 0 {
			titleName := strings.ToLower(X取窗口标题(hWnd))
			if strings.Index(titleName, strings.ToLower(窗口标题)) != -1 {
				return hWnd
			}
		} else {
			break
		}
	}
	return 0
}
